﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Protocolo
{
    public class PaqueteRESDownload : PaqueteRES
    {
        public const string Command = "00";

        byte[] Datos;

        public PaqueteRESDownload(byte[] datos) 
        {
            Datos = datos;
            GenerarPaquete();
        }

        private void GenerarPaquete()
        {
            int tamaño = Datos.Length + 10;
            ByteArray = new Byte[tamaño];
            int posTotal = 0;
            int auxOffset = 0;


            //Carga de Header Largo 3
            var Encabezado = Encoding.ASCII.GetBytes(Header.ToString());
            Byte[] HeaderAux = new Byte[3];
            if (Header.Length < 3)
            {
                auxOffset = 3 - Header.Length;
            }

            Buffer.BlockCopy(Encabezado, 0, HeaderAux, auxOffset, Encabezado.Length);
            Buffer.BlockCopy(HeaderAux, 0, ByteArray, posTotal, 3);
            auxOffset = 0;
            posTotal += 3;

            //Carga CMD Largo 2
            var Comando = Encoding.ASCII.GetBytes(Command);

            Byte[] CMDAux = new Byte[2];
            if (Command.Length < 2)
            {
                auxOffset = 2 - Command.Length;
            }

            Buffer.BlockCopy(Comando, 0, CMDAux, auxOffset, Comando.Length);
            Buffer.BlockCopy(CMDAux, 0, ByteArray, posTotal, 2);
            posTotal += 2;

            //Carga Largo Largo 5
            var Largo = Encoding.ASCII.GetBytes(Datos.Length.ToString());
            Byte[] LargoAux = new Byte[5];
            if (Largo.Length < 5)
            {
                auxOffset = 5 - Largo.Length;
            }

            Buffer.BlockCopy(Largo, 0, LargoAux, auxOffset, Largo.Length);
            Buffer.BlockCopy(LargoAux, 0, ByteArray, posTotal, 5);
            posTotal += 5;

            //Carga Datos
            Buffer.BlockCopy(Datos, 0, ByteArray, posTotal, Datos.Length);
        }
    }
}
